package pers.jphoebe.quartz.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.util.Map;

public class GsonUtil {


	public static String createGsonString(Object object) {
		Gson gson = new Gson();
		String gsonString = gson.toJson(object);
	    return unicode2String(gsonString);
	}

    public static Map<String, String> changeGsonToMap(String data){
        GsonBuilder gb = new GsonBuilder();
        Gson g = gb.create();
        Map<String, String> map = g.fromJson(data, new TypeToken<Map<String, String>>() {}.getType());
        return map;
    }

	
    /**
    句号　　　 3002　　。　　　
    问号　　　 FF1F　　？　　　
    叹号　　     FF01　　！　　　
    逗号　　　 FF0C　　，
    加号　　　 FF0C　　，
    顿号　　　 3001　　、　　　
    分号　　　 FF1B　　；　　　
    冒号　　　 FF1A　　：　　　
    引号　　　 300C　　「　　　
    　　　　　 300D　　」　　　
    引号　　　 300E　　『　　　
    　　　　　 300F　　』　　　
    引号　　　 2018　　‘　　　
    　　　　　 2019　　’　　　
    引号　　　 201C　　“　　　
    　　　　　 201D　　”　　　
    括号　　　 FF08　　（　　　
    　　　　　 FF09　　）　　　
    括号　　　 3014　　〔　　　
    　　　　　 3015　　〕　　　
    括号　　　 3010　　【　　　
    　　　　　 3011　　】　　　
    破折号　     2014　　—　　　
    省略号  　   2026　　…　　　
    连接号　     2013　　–　　　
    间隔号　     FF0E　　．　　　
    书名号  　   300A　 《　　　
    　　　　　  300B　　》　　　
    书名号  　   3008　 〈　　　
    　　　　　  3009　　〉
    **/
	public static String unicode2String(String unicode) {
	    String result = unicode;
	   if(result.contains("u0026#x3002;"))
	   {
	       result = result.replaceAll("u0026#x3002;", "。");
	   }
       if(result.contains("u0026#xff1f;"))
       {
           result = result.replaceAll("u0026#xff1f;", "？");
       }
       if(result.contains("u0026#xff01;"))
       {
           result = result.replaceAll("u0026#xff01;", "！");
       }
       if(result.contains("u0026#xff0c;"))
       {
           result = result.replaceAll("u0026#xff0c;", "，");
       }
       if(result.contains("u0026#x3001;"))
       {
           result = result.replaceAll("u0026#x3001;", "、");
       }
       if(result.contains("u0026#xff1b;"))
       {
           result = result.replaceAll("u0026#xff1b;", "；");
       }
       if(result.contains("u0026#xff1a;"))
       {
           result = result.replaceAll("u0026#xff1a;", "：");
       }
       if(result.contains("u0026#x300c;"))
       {
           result = result.replaceAll("u0026#x300c;", "「");
       }
       if(result.contains("u0026#x300d;"))
       {
           result = result.replaceAll("u0026#x300d;", "」");
       }
       if(result.contains("u0026#x300d;"))
       {
           result = result.replaceAll("u0026#x300d;", "『");
       }
       if(result.contains("u0026#x300f;"))
       {
           result = result.replaceAll("u0026#x300f;", "』");
       }
       if(result.contains("u0026#x2018;"))
       {
           result = result.replaceAll("u0026#x2018;", "‘");
       }
       if(result.contains("u0026#x2019;"))
       {
           result = result.replaceAll("u0026#x2019;", "’");
       }
       if(result.contains("u0026#x201c;"))
       {
           result = result.replaceAll("u0026#x201c;", "“");
       }
       if(result.contains("u0026#x201d;"))
       {
           result = result.replaceAll("u0026#x201d;", "”");
       }
       if(result.contains("u0026#xff08;"))
       {
           result = result.replaceAll("u0026#xff08;", "（");
       }
       if(result.contains("u0026#xff09;"))
       {
           result = result.replaceAll("u0026#xff09;", "）");
       }
       if(result.contains("u0026#x3014;"))
       {
           result = result.replaceAll("u0026#x3014;", "〔");
       }
       if(result.contains("u0026#x3015;"))
       {
           result = result.replaceAll("u0026#x3015;", "〕");
       }
       if(result.contains("u0026#x3010;"))
       {
           result = result.replaceAll("u0026#x3010;", "【");
       }
       if(result.contains("u0026#x3011;"))
       {
           result = result.replaceAll("u0026#x3011;", "】");
       }
       if(result.contains("u0026#x2014;"))
       {
           result = result.replaceAll("u0026#x2014;", "—");
       }
       if(result.contains("u0026#x2026;"))
       {
           result = result.replaceAll("u0026#x2026;", "…");
        }
       if(result.contains("u0026#x2013;"))
       {
           result = result.replaceAll("u0026#x2013;", "–");
       }
       if(result.contains("u0026#xff0e;"))
       {
           result = result.replaceAll("u0026#xff0e;", "．");
       }
       if(result.contains("u0026#x300a;"))
       {
        result = result.replaceAll("u0026#x300a;", "《");
       }
       if(result.contains("u0026#x300b;"))
       {
        result = result.replaceAll("u0026#x300b;", "》");
       }
       if(result.contains("u0026#x3008;"))
       {
        result = result.replaceAll("u0026#x300B;", "〈");
       }
       if(result.contains("u0026#x3009;"))
       {
        result = result.replaceAll("u0026#x3009;", "〉");
       }
        if(result.contains("&#43;"))
       {
        result = result.replaceAll("&#43;", "+");
       }

        result = result.replaceAll("\\\\", "");
	   return result;
	} 
}
